package com.heima.page.listener;

import com.alibaba.fastjson.JSON;
import com.heima.common.constants.message.NewsAutoScanConstants;
import com.heima.page.service.GeneratePageService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * @Description:  监听消息，调用生成静态页面的逻辑
 * @Version: V1.0
 *
 * 生成静态页面需要做准备工作：
 * 1、准备模板
 * 2、准备数据（文章基本信息ap_article\文章内容表数据 ap_article_content）
 * 3、上传静态页面到MinIO
 *
 * 静态页面已经生成成功：静态页面的url地址更新到数据库ap_article中
 */
@Component
@Slf4j
public class GeneratePageListener {

    @Autowired
    GeneratePageService generatePageService;


    @KafkaListener(topics = NewsAutoScanConstants.GENERATE_PAGE_TOPIC)
    public void receiveMessage(String message) {

        if (StringUtils.isNotBlank(message)) {

            log.info("***** GeneratePageListener receiveMessage: ", message);

            // service 业务方法
            Map<String, Long> map = JSON.parseObject(message, Map.class);

            try {
                generatePageService.generateArticlePage(map.get("articleId"));
            } catch (Exception e) {
//                e.printStackTrace();
                log.error("GeneratePage error: ", e);
            }

            log.info("***** GeneratePage is success *****");


        }

    }

}
